package com.apecircle.easytranslib;

import com.apecircle.easytranslib.bean.XlsWriteBean;
import com.apecircle.easytranslib.method.ReadXlsManager;
import com.apecircle.easytranslib.method.WriteXlsManager;

import java.io.File;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class TranslateXls {

    private static final String VALUE_PATH = "Test";  //value文件夹存放的名字
    private static final String XLS_NAME = "translate.xlsx"; //要生成xls的名字
    private static final String XLS_NAME_FINISH = "translate_finish.xlsx"; //要生成xls的名字

    public static void main(String[] args) throws Exception {

        /**
         * 翻译第几列的  从0开始
         */
        transferXls(5);

    }


    private static void transferXls(int column) throws Exception {


        File file = new File("");
        // 当前路径
        String ROOT_PATH = file.getAbsolutePath();

        XlsWriteBean bean = new XlsWriteBean.Builder()
                .setRootPath(ROOT_PATH)
                .setFileFloderName(VALUE_PATH)
                .setXlsName(XLS_NAME)
                .setFinishFileName(XLS_NAME_FINISH)
                .builder();
        /**
         * 读取一个xls将其放在list中
         */
        LinkedHashMap<Integer,List<String>> stringList = ReadXlsManager.getInstance().readXlsToList(bean.getBuilder());
        /**
         * 获取标题
         *
         */
        if(column >= stringList.size()){
            System.out.println("column 必须小于行数");
            return;
        }
        String[] title = ReadXlsManager.getInstance().getTitle();
        //实例化翻译
        GT g = GT.getInstance();
        List<String> translateTextList = new ArrayList<>();
        /**
         * 逐条翻译list中的文本
         */
        for (String str:stringList.get(column)){
            //自动识别原始语言  翻译成中文
            /**
             * 如果需要过滤其他语言 打开 translateText 在注释中添加其他语言的过滤
             */
            String translateText = g.translateText(str, "auto", "zh_cn");
            translateTextList.add(translateText);
        }
        /**
         * 将原始数据和已翻译的数据存入需要的新的list中
         */
        List<Translate> lists = new ArrayList<>();
        /**
         * hashmap 的 key就是title的下标
         */
        for (Map.Entry<Integer,List<String>> entry: stringList.entrySet()){
            int key = entry.getKey();
            List<String> value = entry.getValue();
            lists.add(new Translate(title[key],value));
            if(key == column){
                lists.add(new Translate("已翻译的" + title[key],translateTextList));
            }
        }
        /**
         * 将新的list写入xls中
         */
        WriteXlsManager.getInstance().writeTranslateXls(bean.getBuilder(),lists);
    }

}
